package org.geektime.task.sboauth.config;

/**
 * 参考justoauth实现接口
 *  OAuth平台的API地址的统一接口，提供以下方法：
 *  1) {@link IOAuthSource#authorize()}: 获取授权url. 必须实现
 *  2) {@link IOAuthSource#accessToken()}: 获取accessToken的url. 必须实现
 *  3) {@link IOAuthSource#userInfo()}: 获取用户信息的url. 必须实现
 *
 * @author Long Yu
 * 2021年04月21日 22:06:09
 */
public interface IOAuthSource {


    /**
     * 授权的api
     *
     * @return url
     */
    String authorize();

    /**
     * 获取accessToken的api
     *
     * @return url
     */
    String accessToken();

    /**
     * 获取用户信息的api
     *
     * @return url
     */
    String userInfo();


    /**
     * 获取Source的字符串名字
     *
     * @return name
     */
    default String getName() {
        if (this instanceof Enum) {
            return String.valueOf(this);
        }
        return this.getClass().getSimpleName();
    }




}
